package com.tong.hao.batch.step.test;

import lombok.extern.slf4j.Slf4j;
import org.springframework.batch.item.ItemReader;
import org.springframework.batch.item.NonTransientResourceException;
import org.springframework.batch.item.ParseException;
import org.springframework.batch.item.UnexpectedInputException;

/**
 * @ClassName StringReader
 * @Author 友野浩二
 * @Date 2019/11/24 23:40
 * @Description Step的第一步: 数据读取阶段ItemReader
 * @Version 1.0
 *
 * <pre>
 *      开发人员直接实现ItemReader接口即可。
 * </pre>
 */
@Slf4j
public class StringReader implements ItemReader<String> {

    /**
     * messages是数据源
     */
    private String[] messages = {"abc", "def", "g", "hij", "klm", "n"};

    /**
     * 表示读取数据的下标,每读一次,下标自增,读取完后返回null表示结束。同时把count置为0,以方便下次读取。
     */
    private int count = 0;

    /**
     * @return java.lang.String
     * @Author 友野浩二
     * @Description // 负责从给定的资源中读取可用的数据
     * @Date 2019/11/25 19:44
     * @Param []
     **/
    @Override
    public String read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {
        if (count < messages.length) {
            String message = messages[count++];
            log.info("read data: " + message);
            return message;
        } else {
            log.info("read data end.");
            count = 0;
        }
        return null;
    }
}
